美团-数据仓库高级工程师面试(一)
金三银四,尝试着面试了几家大厂(M、K、B),应邀整理总结了一下,借公众号“数据仓库与Python大数据”平台分享给大家,一起进步!
注:面试题目会陆续整理出来,今天主要先同大家分享美团一面面试总结。
正文
1.mapreduce原理,map数,reduce数
高频必问,可简单阐述,主要是理解
2.负责的那部分离线数仓数据量多大
文件每天大约 x g左右,每天上下可能浮动10几个g,大约 x 亿行
app:播放次数 x 万、正片播放次数 x 万,播放用户数 x 万、正片播放用户数 x 万,有效播放用户数 x 万、有效播放时长(小时)亿、流量(TB)TB,人均播放时长30-40分钟, 活跃用户数uv x 万左右
3.用临时表代替with的好处
能让中间数据落地,减少内存占用
阐述了CTE的优缺点
4.负责的离线数仓大概有多少张表、模型
明细层: 400张表左右
主题层:
产品主题: 296 张表
视频主题: 105 张表
。。。
adm层: 173 张表
数仓层级与主题域模型细化阐述
5.你负责的那部分,数仓架构是怎么设计的
讲解下具体的维度建模过程。维度建模过程是重点,要根据每个公司实际的开发情况说。我们是明细层先做基础表,基础表已经把公共字段和常用字段关联出来,保留事件名和对应json。在基础表的基础上再按照业务过程拆分明细表
重点围绕:选择业务过程-》声明粒度-》确认维度-》确认事实
6.数仓除了标准的4层模型还可以怎么设计
①增加dwt层。dws是一个主题一天的累计行为,可以在dws的基础上增加dwt层,获取每个主题的历史行为。
②增加dm层(数据集市-主题宽表层Data Mart)。基于dws的数据,按照主题汇总,建设宽表模型、汇总表模型,比如商家宽表、商家时段汇总表等。主要作用是支撑数据分析查询以及支持应用所需数据。
相当于增加了一个adm层,和我们现有的adm服务领域不一样。一部分数据从adm获取,另一部分数据从dm层获取
概念:又称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
数据生成方式:由轻度汇总层和明细层数据计算生成。
7. OLAP,负责的多维分析平台(全维度分析数据)。最多几个字段,数据量级别、有没有必要做这么多字段
以单日最大的表为例子
数据量级别;2亿2千万
多少个维度:19个。id->的维度大概是4个,还有两个维度是用来做权限控制的。取不加密数据:adm取数的时候就把加密的字段=空
多少个指标:27个指标
是否有意义:能被业务日常使用同时做分析,并且对他后期的运营带来帮助就有意义
8.有没有使用过kylin、es、clickhouse等其他OLAP平台,说下cube的剪支
9.有没有参与BI平台的选型过程
可看这个,很全了,回顾:大数据可视化BI工具总结
10.正在使用的BI平台中的好处和不好在哪里
好处:增加了集市,把数据加快查询速度。
坏处:报表开发处理过程变复杂了,数据是存在本机服务器上的,有存储的上限,需要定期推动业务方下线数据
11.说下遇到的hive优化场景和数据倾斜场景
1.先groupby再count(1) 来替代count(distinct)
2.空值引发的数据倾斜。关联的字段把空值和-998打上一个随机值
3.两表关联时,不同数据类型引发的数据倾斜。用来关联的字段,既有string又有int类型,所有的string会被发到一个reduce里。处理方案:关联字段把int转换成string
4.合理设置map个数
5.合理设置reduce个数
12.实时数仓做过吗,简单说下
实时数仓的业务场景,lambda/kappa架构优缺点,Flink优化,双流join等
总结语
今天就先写到这里,作为个人总结与参考,希望能抛砖引玉,对你有所帮助!很开心能与大家分享,也欢迎大家关注这个数仓领域高质量的公众号。再次谢邀!
更多干货,请戳"阅读原文"到"面试系列"查看
!关注不迷路~ 各种干货、资源定期分享!